#ifndef LUA_PACKAGE_H
#define LUA_PACKAGE_H

#include <iostream>
#include <vector>
using namespace std;
extern "C"{
	#include "lua.hpp"
}

namespace ZY {

    class Lua
    {
    public:
        Lua(){}
        Lua( const string file );
        ~Lua();

   // int lua_init_call();    ///第一次调用，在实例化后必须调用一次才能调用lua里的函数

    void lua_set_ret( int num );  ///设置调用lua函数返回值个数

    int lua_call_fun( const string func, string str[], int arg_num );///调用lua函数

    vector<string>& lua_return_value();///获取lua函数返回值列表

    void lua_get_tablevalue( const string t_name ); ///获取整个table数据列表

    void lua_get_tablevalue( const string t_name, const string index_str ); ///获取table指定索引的数据

    void lua_get_tablevalue( const string t_name, const int order ); ///获取table指定下标的数据

    void lua_set_tablevalue( const string t_name, const string index_str, string value );

    void lua_set_tablevalue( const string t_name, int order, string value );

    void lua_set_tablevalue( const string t_name, string value );

    void lua_save_tablevalue( const string file_name, const string t_name);

    protected:
    private:
        lua_State *link;
        vector<string> ret_list; ///lua的返回值列表
        vector<string> key_list; ///key值列表
        int ret_num;            /// 返回值个数
        void lua_table_value();
        void lua_table_save( char *buf );
    };
};
#endif // LUA_PACKAGE_H
